package biolabs.space;

import java.util.Collection;

/**
 * Interface implemented by bio-objects that manage space of contained
 * bio-objects. In such a bio-object, this interface might be implemented
 * multiple times by different traits. These traits should implement only
 * the {@code handle*(...)} methods to cope with changes in space occupation.
 * The {@code notify*(...)} methods should be called from the implementing
 * traits after those traits cause a change in space occupation. The {@code
 * notify*(...)} methods will be implemented in the resulting bio-object to
 * call the {@code handle*(...)} equivalents from all the traits.
 *
 * @param <P> type of space description
 *
 * @author Tomas Mikula
 */
public interface SpaceManagingContainer<P> {

	void notifyCapture(Collection<P> capturedSpace);
	void notifyCapture(P capturedPosition);
	void handleCapture(Collection<P> capturedSpace);

}
